package com.bmob.lover.data.model.bean

import android.os.Parcelable
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.Ignore
import androidx.room.PrimaryKey
import com.google.gson.Gson
import com.google.gson.annotations.Expose
import com.google.gson.reflect.TypeToken
import kotlinx.parcelize.Parcelize

//  ┏┓　　　┏┓
//┏┛┻━━━┛┻┓
//┃　　　　　　　┃
//┃　　　━　　　┃
//┃　┳┛　┗┳　┃
//┃　　　　　　　┃
//┃　　　┻　　　┃
//┃　　　　　　　┃
//┗━┓　　　┏━┛
//    ┃　　　┃                  神兽保佑
//    ┃　　　┃                  永无BUG！
//    ┃　　　┗━━━┓
//    ┃　　　　　　　┣┓
//    ┃　　　　　　　┏┛
//    ┗┓┓┏━┳┓┏┛
//      ┃┫┫　┃┫┫
//      ┗┻┛　┗┻┛
/**
 * @author The one
 * @date 2021-05-12 10:00
 * @describe 背景
 * @email 625805189@qq.com
 * @remark
 */
@Parcelize
@Entity(tableName = "Background")
data class Background(
    @PrimaryKey(autoGenerate = true)
    var id:Int = 0,
    @Ignore
    var user:User?=null,
    @Expose
    @Ignore
    var date:BmobDate?=null,
    @ColumnInfo(name = "type")
    var type:Int = 0,
    @Expose
    @ColumnInfo(name = "attachments")
    var attachments:String = "",
    @Expose
    @ColumnInfo(name = "key")
    var key:String = ""
):BmobBean(),Parcelable {

    constructor() : this(0) {}

    fun getFiles():ArrayList<TheFile>{
        if(attachments.isNotEmpty()){
            return Gson().fromJson(
                attachments,
                object : TypeToken<List<TheFile?>?>() {}.type
            )
        }
        return arrayListOf()
    }

    fun getCover():String?{
        return if(getFiles().isEmpty()){
            ""
        }else{
            getFiles()[0].getThumbnail()
        }
    }

    override fun equals(other: Any?): Boolean {
        if(other is Background){
            return type == other.type && attachments == other.attachments
        }
        return false
    }

}